]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
4 years agomisc: Toggle IBus OSK capability on OSK visibility
Carlos Garnacho [Tue, 9 Aug 2022 14:00:33 +0000 (16:00 +0200)]
misc: Toggle IBus OSK capability on OSK visibility

Newer versions of IBus (> 1.5.26) have the IBUS_CAP_OSK capability
which can be used to hint the active IM about an OSK driving input as
opposed to a physical keyboard. This may be used by IMs to tweak their
behavior to suit OSKs better.

Add the GNOME Shell side handling for this capability, and toggle it
on whenever the OSK is visible.

Since this is a far too new enum value and we don't want such new
IBus dependency, this change plays fast and loose with JS guarantees,
since a logical OR with an undefined value results in the other operand
unmodified it will work for older versions where the capability does not
exist and thus we want nothing extra enabled.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2415>

4 years agologinDialog: Don't call _loginScreenSessionActivated() when not required
Alessandro Bono [Mon, 8 Aug 2022 11:33:53 +0000 (13:33 +0200)]
loginDialog: Don't call _loginScreenSessionActivated() when not required

We are calling _loginScreenSessionActivated() even in cases where this is
not required. For example, there are cases where the Active property is
already `true` and properties like `IdleHint`, `IdleSinceHint` and
`IdleSinceHintMonotonic` change. In this cases _loginScreenSessionActivated()
is called and will reset the authPrompt when not necessary.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2411>

4 years agoUpdate Persian translation
Danial Behzadi [Tue, 9 Aug 2022 21:14:00 +0000 (21:14 +0000)]
Update Persian translation

4 years agoUpdate Hebrew translation
Yosef Or Boczko [Tue, 9 Aug 2022 17:36:58 +0000 (17:36 +0000)]
Update Hebrew translation

4 years agoUpdate Ukrainian translation
Yuri Chornoivan [Tue, 9 Aug 2022 17:16:06 +0000 (17:16 +0000)]
Update Ukrainian translation

4 years agogdmUtil: Fix ShellUserVerifier retry logic
Alessandro Bono [Mon, 8 Aug 2022 10:29:47 +0000 (12:29 +0200)]
gdmUtil: Fix ShellUserVerifier retry logic

Don't call the _retry() function if we are done trying.

Fallout from 8cfd4c969ba5e8126234585b1656d905266299dd.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2412>

4 years agogdmUtil: Refactor on no-more-messages case
Alessandro Bono [Mon, 8 Aug 2022 10:19:51 +0000 (12:19 +0200)]
gdmUtil: Refactor on no-more-messages case

There are few places where we want to perform an action when no more
messages are present. Create a function that covers this use case
and use it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2412>

4 years agoUpdate Catalan translation
Jordi Mas [Tue, 9 Aug 2022 15:00:57 +0000 (17:00 +0200)]
Update Catalan translation

4 years agoPOTFILES.in: Remove js/ui/status/power.js
Andre Klapper [Tue, 9 Aug 2022 14:44:40 +0000 (16:44 +0200)]
POTFILES.in: Remove js/ui/status/power.js

Merged in ce19849c09de9018b7b4f17b11d432b27c34d8cf

4 years agostatus/network: Always notify icon-name on strength change
Florian Müllner [Tue, 9 Aug 2022 10:55:16 +0000 (12:55 +0200)]
status/network: Always notify icon-name on strength change

We do want to update the best AP on strength change, in case we
can switch to a better one.

But even if we can't and the AP is unchanged, the icon should
be updated to reflect the change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2414>

4 years agodbus-interfaces: Add names to introspection data for notifications
Robert Ancell [Wed, 3 Aug 2022 01:39:14 +0000 (13:39 +1200)]
dbus-interfaces: Add names to introspection data for notifications

This makes it easier to use via gdbus/d-feet.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2398>

4 years agost/theme-node-drawing: Conditionally paint the center shadow rectangle
Daniel van Vugt [Tue, 25 May 2021 09:33:01 +0000 (17:33 +0800)]
st/theme-node-drawing: Conditionally paint the center shadow rectangle

Only when part of it is actually visible.

Because the central rectangle is generally the largest part, this
eliminates most of the shadow's render time. For example, animating
`.workspace-background` by tapping Super, the shell's overall render
time is reduced about 15%.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1915>

4 years agocss: Add a special chroma key color and use it on .workspace-background
Daniel van Vugt [Thu, 15 Jul 2021 06:18:48 +0000 (14:18 +0800)]
css: Add a special chroma key color and use it on .workspace-background

There's no visible change here since we're just moving from the
default transparent black to transparent other. But the latter can
be used as a special value to indicate to the rendering code when a
background is expected to be always occluded.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1915>

4 years agostyle: CSS follow ups for quicksettings
Sam Hewitt [Thu, 4 Aug 2022 14:34:12 +0000 (12:04 -0230)]
style: CSS follow ups for quicksettings

- some padding adjustments
- add proper focus style for :checked buttons
- popover radii adjustments

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2401>

4 years agoUpdated Spanish translation
Daniel Mustieles [Mon, 8 Aug 2022 10:41:46 +0000 (12:41 +0200)]
Updated Spanish translation

4 years agoUpdate Indonesian translation
Kukuh Syafaat [Mon, 8 Aug 2022 04:15:53 +0000 (04:15 +0000)]
Update Indonesian translation

4 years agostatus/network: Add section classes for each device type
Florian Müllner [Wed, 3 Aug 2022 03:27:44 +0000 (05:27 +0200)]
status/network: Add section classes for each device type

Those will eventually become quick toggles, and as there'll be small
differences like menu headers or which settings panel to launch, it
makes sense to give each its own class.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Rename DeviceCategory and base on device type
Florian Müllner [Mon, 1 Aug 2022 14:19:43 +0000 (16:19 +0200)]
status/network: Rename DeviceCategory and base on device type

Right now DeviceCategory is a small section wrapper that shows
a summary instead of its content if it contains too many items.

It will eventually eventually turn into the base class for
network device quick toggles. Who would have thought that
when it was added for the "there's a computer with 32 ethernet
cards" fringe case?!

For now, give it a more appropriate name and use device types
instead of our made-up categories, now that the two map neatly.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Give bluetooth its own category
Florian Müllner [Mon, 1 Aug 2022 13:13:06 +0000 (15:13 +0200)]
status/network: Give bluetooth its own category

In the quick settings future, each device type will use a separate
toggle. We still have a long way to go, but start with giving
bluetooth its own section/category. Baby steps …

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Remove WireguardItem
Florian Müllner [Tue, 2 Aug 2022 09:50:05 +0000 (11:50 +0200)]
status/network: Remove WireguardItem

Wireguard connections are now covered by the VPN item.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Use ActiveConnection:state in VPN item
Florian Müllner [Tue, 2 Aug 2022 09:46:28 +0000 (11:46 +0200)]
status/network: Use ActiveConnection:state in VPN item

The separate :vpn-state property is more fine-grained, but as
we aren't using anything beyond what :state provides, we can
just as well use that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Remove status from VPN item
Florian Müllner [Tue, 2 Aug 2022 09:33:37 +0000 (11:33 +0200)]
status/network: Remove status from VPN item

It's odd to swap out a switch with a status label, and the
information isn't that helpful to begin with: It's either
transient (connecting, deactivating, ...), or too little to
be meaningful (unknown, failed, ...).

We're also perfectly happy to not show it in "label mode"
(i.e. when there's just one VPN).

Just get rid of it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Simplify device item labels
Florian Müllner [Thu, 4 Aug 2022 23:37:56 +0000 (01:37 +0200)]
status/network: Simplify device item labels

Stop providing detailed state descriptions, instead use a name
that best represents the device at the moment (like a wifi SSID,
the carrier name, or the device name as determined by network manager).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Track device sections as device sections
Florian Müllner [Thu, 4 Aug 2022 14:47:22 +0000 (16:47 +0200)]
status/network: Track device sections as device sections

The _devices property is another case of overloading the
"device" term.

Fun fact:

  this._devices[device._delegate.category].devices

uses three different meanings of "device" (section, NM.Device, item).

The devices array in sections won't be around for much longer,
but the property that tracks the sections is worth renaming.

While at it, use a map instead of a plain object, which has a
guaranteed order when iterating (which will come in handy later).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Rename setDeviceDescription()
Florian Müllner [Tue, 2 Aug 2022 22:54:20 +0000 (00:54 +0200)]
status/network: Rename setDeviceDescription()

It is used to pass the disambiguated device name to device items,
so call it "name" rather than "description".

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Rename device menu items
Florian Müllner [Tue, 2 Aug 2022 20:11:52 +0000 (22:11 +0200)]
status/network: Rename device menu items

NMDeviceWireless sounds an awful lot like NM.DeviceWifi.

Rename all device menu items to make it clear that they are indeed
menu items, not the device they represent.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Split out WirelessNetwork class
Florian Müllner [Sat, 23 Jul 2022 23:11:32 +0000 (01:11 +0200)]
status/network: Split out WirelessNetwork class

Different access points can belong to the same wireless network. As
NetworkManager doesn't handle this for us, we need to track networks
ourselves, and we currently do this using ad-hoc object literals and
monkey-patching.

Clean this up by factoring out a proper WirelessNetwork class, and
associate them to items with a map.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Use NM utility function for classifying security
Florian Müllner [Sat, 23 Jul 2022 19:56:04 +0000 (21:56 +0200)]
status/network: Use NM utility function for classifying security

Interpreting the different flags is better left to the domain
experts at NetworkManager. It is also much more likely that
NM's own functions will handle newly added flags than our own
code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Use property bindings for global visibility
Florian Müllner [Sun, 31 Jul 2022 23:41:01 +0000 (01:41 +0200)]
status/network: Use property bindings for global visibility

There is a straight mapping between running/enabled and visibility,
so bind them instead of using a signal handler.

_syncConnectivity() is called both from _syncMainConnection() and
on connectivity changes, which should cover any running/enabled
changes.

That just leaves updating the icon on state changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Use connectObject() to connect client signals
Florian Müllner [Sun, 31 Jul 2022 23:47:22 +0000 (01:47 +0200)]
status/network: Use connectObject() to connect client signals

We would want the signals to be disconnected if we ever happened to
destroy the indicator. Even if we don't, connectObject() is simply
nicer when connecting half a dozen handlers at once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Simplify notification code
Florian Müllner [Sun, 31 Jul 2022 23:30:12 +0000 (01:30 +0200)]
status/network: Simplify notification code

There is only one case where we show a notification: When activating
a connection failed.

There is therefore no reason for a generic wrapper around the
notification API. Likewise, tracking the source is a bit pointless,
given that the notification is transient. In fact, as we destroy
an existing notification *before* checking for the source, any
previous source will be gone by that point.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Fix error notification for wireguard
Florian Müllner [Fri, 5 Aug 2022 21:21:21 +0000 (23:21 +0200)]
status/network: Fix error notification for wireguard

The function is a handler for the `notify::state` handler, so
the state and reason parameters used in the checks are always
undefined.

In addition, `DEACTIVATED` is not (just) a failure state. We
clearly don't want to complain about a failed connection when
the change happened on request of the user.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Remove reason param from ::activation-failed
Florian Müllner [Sun, 31 Jul 2022 23:21:50 +0000 (01:21 +0200)]
status/network: Remove reason param from ::activation-failed

We never used it, so after more than ten years, it seems safe to
assume that we never will.

Plus different items pass different types, which makes it pretty
much impossible to use, even if we wanted to (which apparently
we don't 🤷️)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Make connectivity queue a Set
Florian Müllner [Sun, 31 Jul 2022 23:17:53 +0000 (01:17 +0200)]
status/network: Make connectivity queue a Set

It's better suited than an array.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Emit 'icon-changed' on primary connection changes
Florian Müllner [Fri, 5 Aug 2022 11:21:26 +0000 (13:21 +0200)]
status/network: Emit 'icon-changed' on primary connection changes

When deciding on whether to show the 'no-route' icon, we check
for the client's connectivity *and* whether the devices's active
connection is used as primary connection.

This is currently masked by the indicator updating the icon on
connection changes anyway, but items should still notify the
change themselves.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Notify icon change after access-point update
Florian Müllner [Thu, 4 Aug 2022 22:39:47 +0000 (00:39 +0200)]
status/network: Notify icon change after access-point update

We call sync() which updates our own label and icon, but does
not notify the indicator about the icon change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Sync active access point from constructor
Florian Müllner [Thu, 4 Aug 2022 22:32:24 +0000 (00:32 +0200)]
status/network: Sync active access point from constructor

The wireless device item tracks the active access point in order
to update its icon on signal strength changes.

However we currently don't synchronize the initial state, so we
miss strength changes until the first access-point change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Catch errors when fetching client
Florian Müllner [Mon, 1 Aug 2022 14:55:12 +0000 (16:55 +0200)]
status/network: Catch errors when fetching client

Otherwise any unrelated errors in that function are hidden,
because exceptions in async functions are turned into promise
rejections (and JS cannot know that we won't handle it at a later
point).

It wouldn't happen to me of course 😉

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agostatus/network: Some minor style fixes
Florian Müllner [Sun, 7 Aug 2022 20:09:23 +0000 (22:09 +0200)]
status/network: Some minor style fixes

I wasn't genuiously going to touch those lines, but I ran into
a limitation of the run-eslint script:

It currently bases changed lines on a diff between HEAD and main
instead of the commit-by-commit log.

The two can vary quite a bit when shuffling code around, and those
are the lines the tool kept complaining about.

I'll look into improving the script, but for now it's quicker to
just shut it up by fixing up the complaints.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

4 years agoUpdate Basque translation
Asier Sarasua Garmendia [Sun, 7 Aug 2022 09:33:57 +0000 (09:33 +0000)]
Update Basque translation

4 years agoUpdate Persian translation
Danial Behzadi [Sat, 6 Aug 2022 23:41:23 +0000 (23:41 +0000)]
Update Persian translation

4 years agoauthPrompt: Don't propagate serviceName to setMessage
Alessandro Bono [Fri, 5 Aug 2022 10:56:04 +0000 (12:56 +0200)]
authPrompt: Don't propagate serviceName to setMessage

There isn't always a serviceName when we set a message. Furthermore we
are passing the serviceName only to decide if we want to wiggle or not.
Pass the wiggle parameters instead. If they are missing, we don't want
to wiggle.

This fixes the following error:
JS ERROR: Exception in callback for signal: login-format-changed: Error: Wrong type number; string expected
setMessage@resource:///org/gnome/shell/gdm/authPrompt.js:542:13
_showRealmLoginHint@resource:///org/gnome/shell/gdm/loginDialog.js:931:26
_emit@resource:///org/gnome/gjs/modules/core/_signals.js:114:47
_updateLoginFormat@resource:///org/gnome/shell/gdm/realmd.js:85:18
_reloadRealm@resource:///org/gnome/shell/gdm/realmd.js:57:14
_onRealmLoaded@resource:///org/gnome/shell/gdm/realmd.js:64:14
_makeProxyWrapper/</<@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:245:34

Fallout from 526f0711f1a7b7bd8e4913845b5a559f2c93be5c.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5547
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2404>

4 years agoUpdate Persian translation
Danial Behzadi [Sat, 6 Aug 2022 22:52:02 +0000 (22:52 +0000)]
Update Persian translation

4 years agoquickSettings: Bind menu arrow's reactivity to parent
Florian Müllner [Fri, 5 Aug 2022 20:01:30 +0000 (22:01 +0200)]
quickSettings: Bind menu arrow's reactivity to parent

When a QuickMenuToggle is made insensitive, then it is unexpected
that its menu can still be opened despite the appearance.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2405>

4 years agoUpdate Occitan translation
Quentin PAGÈS [Sat, 6 Aug 2022 17:13:32 +0000 (17:13 +0000)]
Update Occitan translation

4 years agoUpdate Russian translation
Aleksandr Melman [Sat, 6 Aug 2022 14:44:02 +0000 (14:44 +0000)]
Update Russian translation

4 years agoUpdate Hebrew translation
Yosef Or Boczko [Fri, 5 Aug 2022 06:48:05 +0000 (06:48 +0000)]
Update Hebrew translation

4 years agost/theme-node-transition: Guard against 0-sized offscreen box
Florian Müllner [Fri, 3 Jun 2022 01:19:04 +0000 (03:19 +0200)]
st/theme-node-transition: Guard against 0-sized offscreen box

We know beforehand that setting up the framebuffers will fail in
that case, so we can avoid cluttering the log with warnings.

(Although the warning would likely indicate a stylesheet bug)

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/289

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2326>

4 years agost/settings: Connect to mouse settings
Alessandro Bono [Thu, 4 Aug 2022 15:50:39 +0000 (17:50 +0200)]
st/settings: Connect to mouse settings

This is likely a typo.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2402>

4 years agogit: Always use libgnome-volume-control submodule from GNOME group
Sebastian Keller [Thu, 4 Aug 2022 16:31:16 +0000 (18:31 +0200)]
git: Always use libgnome-volume-control submodule from GNOME group

Otherwise CI will fail for anyone who does not have a fork of it in
their personal projects.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2403>

4 years agoUpdate Bulgarian translation
Alexander Shopov [Wed, 3 Aug 2022 14:59:56 +0000 (14:59 +0000)]
Update Bulgarian translation

4 years agoUpdate Bulgarian translation
Alexander Shopov [Wed, 3 Aug 2022 14:57:29 +0000 (14:57 +0000)]
Update Bulgarian translation

4 years agostatus/power: Merge with system indicator
Florian Müllner [Sat, 30 Jul 2022 01:32:05 +0000 (03:32 +0200)]
status/power: Merge with system indicator

Now that the old system menu has been ported over, we can move
the power toggle to its intended place. The main difference to
the stand-alone toggle is that the button now uses its natural
size rather than the fixed size of regular quick items.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agostatus/system: Port to quick settings
Florian Müllner [Sat, 30 Jul 2022 00:17:15 +0000 (02:17 +0200)]
status/system: Port to quick settings

This port is a bit messier than the previous ones, because the
existing menu section translates less directly to the new UI,
which uses a row of individual toggles for settings, lock and
shutdown.

In order to not complicate the grid layout further by supporting
rows with a different number of columns than the overall grid and
children at their natural size, create a custom, non-reactive
SystemItem item that spans an entire row, and contains the individual
toggles.

This works quite well, even with the shutdown item that uses a menu
for the various actions.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agostatus/volume: Port to quick settings
Florian Müllner [Fri, 29 Jul 2022 23:37:07 +0000 (01:37 +0200)]
status/volume: Port to quick settings

Thanks to the preparations and QuickSlider, this is again
straight-forward.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agostatus/brightness: Port to quick settings
Florian Müllner [Fri, 29 Jul 2022 22:41:00 +0000 (00:41 +0200)]
status/brightness: Port to quick settings

Using QuickSlider, this is another easy port.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agostatus/powerProfiles: Port to quick settings
Florian Müllner [Fri, 29 Jul 2022 16:50:57 +0000 (18:50 +0200)]
status/powerProfiles: Port to quick settings

With menu support in place, this is now a straight-forward port:
Just add the existing profiles section to a QuickToggleMenu instead
of a submenu item.

The toggle itself now switches between 'balanced' and the last used
non-default profile.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agoquickSettings: Add QuickSlider
Florian Müllner [Fri, 29 Jul 2022 22:23:30 +0000 (00:23 +0200)]
quickSettings: Add QuickSlider

Between input/output volume and brightness, we have enough use
cases for a common slider QuickSettingsItem, in particular as
the items can have a menu.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agoquickSettings: Add QuickMenuToggle
Florian Müllner [Fri, 29 Jul 2022 16:33:54 +0000 (18:33 +0200)]
quickSettings: Add QuickMenuToggle

This is a convenience subclass for a quick toggle with a menu.

The menu can be disabled dynamically and if enabled, an arrow
is displayed that allows opening the menu.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agoquickSettings: Color header icon if checked
Florian Müllner [Fri, 29 Jul 2022 22:06:49 +0000 (00:06 +0200)]
quickSettings: Color header icon if checked

... as requested by the design team.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agoquickSettings: Add header to QuickToggleMenu
Florian Müllner [Fri, 29 Jul 2022 21:41:33 +0000 (23:41 +0200)]
quickSettings: Add header to QuickToggleMenu

All menus in the mockups spot a header, and as we are using a
custom menu type anyway, just add some API there.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agoquickSettings: Add menu support to items
Florian Müllner [Fri, 29 Jul 2022 13:22:37 +0000 (15:22 +0200)]
quickSettings: Add menu support to items

Now that the QuickSettingsMenu supports child menus, it is time
to add menu support to quick toggles.

Do that by introducing a QuickSettingsItem parent class with a
construct-only :has-menu property, as that will allow including
menus in items that aren't following the standard icon+label
pattern of QuickToggle (yes, we'll have some of those).

A common parent class also allows us to control the type of
menu that is created. That's important, as we need another
custom menu type to

- constrain the menu's y position to place it underneath
  the source actor

- use open/close animations taylored for this use case

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agoquickSettings: Support child menus in QuickSettingsMenu
Florian Müllner [Fri, 29 Jul 2022 13:05:27 +0000 (15:05 +0200)]
quickSettings: Support child menus in QuickSettingsMenu

This is where it gets hairy.

Some quick settings items will have an associated menu. When
opened, the main menu should grow to make room for the child
menu, as it would do if it contained the child.

At the same time, the child menu will attach to its parent, and
block all input there while it is open.

Menu-modal menus so to speak.

Implement this as follows:

 - change the QuickSettingsMenu actor to a stack that holds
   - the boxpointer (a.k.a. the actual menu)
   - an overlay actor to hold child menus

 - use constraints to bind the overlay's position and width
   to the boxpointer; the y position is offset to align the
   overlay with the grid inside the actual menu

 - add a placeholder actor to the main grid, whose height is
   bound to the overlay height; using a "clone" instead of
   the actual overlay means that layout changes are not triggered
   from outside the grid hierarchy, which would be prone to
   allocation warnings

 - update the layout manager to not allocate the placeholder as
   a regular grid child, but instead include its height in the
   space underneath the row with an open menu

 - apply a dim effect to the boxpointer when a child menu is
   open, to indicate that input is blocked

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2393>

4 years agoworkspace: Port WorkspaceBackground allocate to C
Ivan Molodetskikh [Sun, 10 Jul 2022 05:13:15 +0000 (22:13 -0700)]
workspace: Port WorkspaceBackground allocate to C

WorkspaceBackground's allocate is a hot function called every frame
during overview animations. Port it to C.

While we're at it, cache the work area and the monitor geometry, which
do not need to be re-fetched on every allocation.

This reduces the average WorkspaceBackground allocation time from
0.134 ms to 0.017 ms. With four workspaces, scrolling the overview sees
an average WorkspacesView allocation time improvement from
1.104 ms to 0.678 ms.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2394>

4 years agoAdd shell_global_get_workspace_manager ()
Ivan Molodetskikh [Sun, 31 Jul 2022 17:35:26 +0000 (10:35 -0700)]
Add shell_global_get_workspace_manager ()

It will be used in the subsequent commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2394>

4 years agoUpdate Portuguese translation
Hugo Carvalho [Wed, 3 Aug 2022 09:46:32 +0000 (09:46 +0000)]
Update Portuguese translation

4 years agoUpdate Ukrainian translation
Yuri Chornoivan [Wed, 3 Aug 2022 06:09:31 +0000 (06:09 +0000)]
Update Ukrainian translation

4 years agostyle: Add generic .icon-button class
Florian Müllner [Tue, 2 Aug 2022 17:26:53 +0000 (19:26 +0200)]
style: Add generic .icon-button class

The class is meant for buttons that only contain an icon, as
found in many GTK apps.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2397>

4 years agobuild: Port to gcr4
Milan Crha [Tue, 19 Jul 2022 16:31:04 +0000 (18:31 +0200)]
build: Port to gcr4

The gcr4 is going to replace gcr3. As only base functions are used,
the port to gcr4 is trivial.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2386>

4 years agostatus/darkMode: Add dark mode toggle
Florian Müllner [Wed, 27 Jul 2022 01:38:28 +0000 (03:38 +0200)]
status/darkMode: Add dark mode toggle

The aggregate menu with its submenus isn't well-suited for simple
on-off actions, so we didn't expose the global color-scheme support
that was introduced last cycle.

Quick settings on the other hand are a natural fit for actions like
this, so add a corresponding toggle.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agostatus/autoRotate: Port to quick settings
Florian Müllner [Wed, 27 Jul 2022 01:46:43 +0000 (03:46 +0200)]
status/autoRotate: Port to quick settings

On devices where auto-rotation is supported, (un)locking the
orientation is a common enough action to not bury it in a menu.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agostatus/power: Port to quick settings
Florian Müllner [Sat, 30 Jul 2022 14:52:39 +0000 (16:52 +0200)]
status/power: Port to quick settings

The power indicator should not be a regular quick toggle, but
instead be part of a "system area" row at the top of the menu.

But as in the end it is still a simple button, we can do the
port to quick settings now, and move it later when the system
row is implemented.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agostatus/bluetooth: Port to quick settings
Florian Müllner [Tue, 26 Jul 2022 08:45:35 +0000 (10:45 +0200)]
status/bluetooth: Port to quick settings

For now, this is another simple toggle. The icon, state and
visibility reflect what the old menu did, and the top bar
icon is still only shown when devices are currently connected.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agostatus/rfkill: Port to quick settings
Florian Müllner [Sun, 24 Jul 2022 18:45:45 +0000 (20:45 +0200)]
status/rfkill: Port to quick settings

Another simple toggle. Unlike the old menu, it is always shown
if airplane mode is supported, not just while airplane mode is
active.

We still only show the top bar icon while airplane mode is on.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agostatus/nightLight: Port to quick settings
Florian Müllner [Sun, 24 Jul 2022 18:18:55 +0000 (20:18 +0200)]
status/nightLight: Port to quick settings

Night-light is now a simple, always visible toggle that directly
controls the underlying setting. No change to the top bar icon,
which is still only shown while night-light is active (read: at night).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agostatus/remoteAccess: Move to quick settings
Florian Müllner [Wed, 27 Jul 2022 10:54:24 +0000 (12:54 +0200)]
status/remoteAccess: Move to quick settings

And there goes the last icon-only indicator. From now on, some
actual work will be involved 😱️

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agostatus/thunderbolt: Move to quick settings
Florian Müllner [Wed, 27 Jul 2022 02:01:53 +0000 (04:01 +0200)]
status/thunderbolt: Move to quick settings

... and another icon-only indicator that can be just moved.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agostatus/location: Move to quick settings
Florian Müllner [Wed, 27 Jul 2022 02:43:39 +0000 (04:43 +0200)]
status/location: Move to quick settings

Another icon-only indicator, so another plain move.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agopanel: Move unsafe-mode indicator to quick settings
Florian Müllner [Wed, 27 Jul 2022 02:46:42 +0000 (04:46 +0200)]
panel: Move unsafe-mode indicator to quick settings

As the inicator doesn't have any UI besides the top bar icon,
the move is trivial.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agopopupMenu: Close quick settings when activating settings action
Florian Müllner [Sat, 30 Jul 2022 00:24:40 +0000 (02:24 +0200)]
popupMenu: Close quick settings when activating settings action

Like the overview, the quick settings menu should be closed when
a launcher action is activated.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agopanel: Add closeQuickSettings() method
Florian Müllner [Sat, 30 Jul 2022 00:24:17 +0000 (02:24 +0200)]
panel: Add closeQuickSettings() method

Like the aggregate menu currently, the quick settings menu will
eventually contain some items that should dismiss the menu. And
as those items may appear in child menus or otherwise be nested,
a public method on a global object is more convenient than handing
the main menu down the hierarchy.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agopanel: Add quick settings indicator
Florian Müllner [Sun, 24 Jul 2022 17:49:58 +0000 (19:49 +0200)]
panel: Add quick settings indicator

The new indicator will eventually expose all the system status
items that are currently provided by the aggregate menu, but in
a more accessible form than the current submenu-heavy menu.

Right now this just adds the new empty indicator to the top bar,
alongside the existing aggregate menu.

We can then move items over one-by-one.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agoquickSettings: Add SystemIndicator
Florian Müllner [Sun, 24 Jul 2022 17:29:50 +0000 (19:29 +0200)]
quickSettings: Add SystemIndicator

This serves the exact same purpose as the existing SystemIndicator
class from PanelMenu, except that it exposes a quickSettingsItems
array instead of a menu.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agoquickSettings: Add QuickToggle
Florian Müllner [Sun, 24 Jul 2022 17:29:50 +0000 (19:29 +0200)]
quickSettings: Add QuickToggle

Most quick settings items are just buttons with icon, label, and
a particular style. While that's easy enough, a dedicated class
with corresponding properties is more convenient.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agoquickSettings: Introduce QuickSettingsMenu
Florian Müllner [Sun, 24 Jul 2022 17:29:50 +0000 (19:29 +0200)]
quickSettings: Introduce QuickSettingsMenu

The quick settings menu is a popover that arranges items in a
reflowing, homogeneous grid. Grid children may span multiple
columns, but not rows.

For now the QuickSettingsMenu that contains the grid is just a
convenience wrapper around the layout manager that does the heavy
lifting. The two will become more intertwined when we add support
for menu toggles though, so the custom menu type is unfortunately
needed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>

4 years agoci: Bump mutter image
Florian Müllner [Tue, 2 Aug 2022 14:50:33 +0000 (16:50 +0200)]
ci: Bump mutter image

Mutter bumped its wayland-protocols dependency, so we need to
pull in an image that includes the new version.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2396>

4 years agoUpdate Ukrainian translation
Yuri Chornoivan [Tue, 2 Aug 2022 11:38:39 +0000 (11:38 +0000)]
Update Ukrainian translation

4 years agologinManager: Return objects instead of multiple booleans
Florian Müllner [Fri, 8 Jul 2022 14:23:39 +0000 (16:23 +0200)]
loginManager: Return objects instead of multiple booleans

Multiple booleans - both in arguments and return values - are almost
always problematic API, because people have to memorize (or more likely
look up) the meaning of each position.

Instead, return a JS object so each value has a name attached to it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2370>

4 years agojs: Use async D-Bus wrappers
Florian Müllner [Thu, 23 Jun 2022 12:53:29 +0000 (14:53 +0200)]
js: Use async D-Bus wrappers

After porting the more complex cases - in particular those that
affect a module's API - we are left with straight-forward D-Bus
method calls that can be moved to promise-based wrappers in one
go.

For consistency, this also switches from Remote to Async where
the call result is ignored.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2344>

4 years agologinManager: Make API promise-based
Florian Müllner [Thu, 23 Jun 2022 13:45:44 +0000 (15:45 +0200)]
loginManager: Make API promise-based

The LoginManager abstraction is still mostly callback-based, not
least because the methods are thin wrappers around logind D-Bus
calls.

However as gjs' dbus wrapper now generates promised-based wrappers
as well, we can implement a proper async API just as naturally.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2344>

4 years agostatus/location: Make AppAuthorizer async
Florian Müllner [Fri, 8 Jul 2022 03:24:18 +0000 (05:24 +0200)]
status/location: Make AppAuthorizer async

Instead of passing a callback through a series of methods and
callbacks, change authorize() to return its result asynchronously.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2344>

4 years agoautorunManager: Promisify ContentTypeDiscoverer
Florian Müllner [Thu, 23 Jun 2022 15:02:55 +0000 (17:02 +0200)]
autorunManager: Promisify ContentTypeDiscoverer

Thanks to recent gjs changes - namely the ability to promisify
interface prototypes and promise-based D-Bus wrappers - we can
modernize the ContentTypeDiscoverer API to use an async function
instead of a callback.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2344>

4 years agosearch: Use async functions instead of callbacks
Florian Müllner [Thu, 23 Jun 2022 16:13:36 +0000 (18:13 +0200)]
search: Use async functions instead of callbacks

Our search provider API has to be asynchronous to support remote
providers. It doesn't have to be based on callbacks though, now
that async functions provide a nicer alternative.

That is particularly true after gjs's D-Bus wrapper started to
generate promise-based method variants.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2344>

4 years agoremoteSearch: Stop using callback to return loaded providers
Florian Müllner [Thu, 23 Jun 2022 16:17:57 +0000 (18:17 +0200)]
remoteSearch: Stop using callback to return loaded providers

Provider loading has been synchronous since 2013, so we can
just as well return the results directly instead of passing
them to a callback.

Even if we returned to asynchronous loading in the future,
we wouldn't want to use a callback, but make the function
itself async.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2344>

4 years agoobjectManager: Simplify fetching of remote objects
Florian Müllner [Fri, 8 Jul 2022 06:52:18 +0000 (08:52 +0200)]
objectManager: Simplify fetching of remote objects

Instead of maintaining an inhibitor count, fetch objects and
their interfaces asynchronously and wait for all promises to
settle.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2344>

4 years agoobjectManager: Use non-legacy style
Florian Müllner [Fri, 8 Jul 2022 03:38:39 +0000 (05:38 +0200)]
objectManager: Use non-legacy style

There are a couple of places left where we still use the old
indentation style, update them before making code changes.

After that, there are only a couple of non-type-safe comparisons
left of legacy style, so change those as well while we're at it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2344>

4 years agoUpdate Portuguese translation
Hugo Carvalho [Mon, 1 Aug 2022 18:18:11 +0000 (18:18 +0000)]
Update Portuguese translation

4 years agoUpdate Catalan translation
Jordi Mas [Mon, 1 Aug 2022 16:46:40 +0000 (18:46 +0200)]
Update Catalan translation

4 years agoUpdate Russian translation
Aleksandr Melman [Mon, 1 Aug 2022 15:16:16 +0000 (15:16 +0000)]
Update Russian translation

4 years agostatus/remote-access: Split out screen sharing indicator
Florian Müllner [Wed, 27 Jul 2022 10:29:26 +0000 (12:29 +0200)]
status/remote-access: Split out screen sharing indicator

The latest mockups move the screen sharing indicator into a
separate control, similar to the existing indicator for built-in
screen recordings.

As this removes the submenu and only keeps the top bar icon (for
external screen recordings), this will smooth the transition to
quick settings.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2391>